/**
 * 按需导入element组件
 */
import Vue from 'vue'
import {
  Button,
  Form,
  FormItem,
  Input,
  Message,
  Container,
  Header,
  Aside,
  Main,
  Menu,
  MenuItem,
  Submenu,
  Breadcrumb,
  BreadcrumbItem,
  Card,
  Row,
  Col,
  Table,
  TableColumn,
  Switch,
  Tooltip,
  Pagination,
  Dialog,
  MessageBox,
  Tag,
  Tree,
  Select,
  Option,
  Cascader,
  Alert,
  Tabs,
  TabPane,
  Steps,
  Step,
  CheckboxGroup,
  Checkbox,
  Upload
} from 'element-ui'
// 因项目中所使用的element-ui版本较低,不包含时间线Timeline组件,故需要单独下载并导入
import Timeline from './timeline/index.js' // Timeline时间线,可视化地呈现时间流信息
import TimelineItem from './timeline-item/index.js'

// 注册为Vue的全局组件
Vue.use(Button)
Vue.use(Form)
Vue.use(FormItem)
Vue.use(Input)
Vue.use(Container)
Vue.use(Header)
Vue.use(Aside)
Vue.use(Main)
Vue.use(Menu)
Vue.use(MenuItem)
Vue.use(Submenu)
Vue.use(Breadcrumb)
Vue.use(BreadcrumbItem)
Vue.use(Card)
Vue.use(Row)
Vue.use(Col)
Vue.use(Table)
Vue.use(TableColumn)
Vue.use(Switch) // 滑动开关
Vue.use(Tooltip) // 文字提示
Vue.use(Pagination) // 分页
Vue.use(Dialog) // 对话框
Vue.use(Tag) // Tag标签,用于标记和选择
Vue.use(Tree) // Tree树形控件,用清晰的层级结构展示信息,可展开或折叠
Vue.use(Select) // Select选择器,当选项过多时,使用下拉菜单展示并选择内容
Vue.use(Option) // 分组
Vue.use(Cascader) // Cascader级联选择器,当一个数据集合有清晰的层级结构时，可通过级联选择器逐级查看并选择
Vue.use(Alert) // Alert警告,用于页面中展示重要的提示信息
Vue.use(Tabs) // Tabs标签页,分隔内容上有关联但属于不同类别的数据集合
Vue.use(TabPane)
Vue.use(Steps) // Steps步骤条, 引导用户按照流程完成任务的分步导航条,可根据实际应用场景设定步骤,步骤不得少于 2 步
Vue.use(Step)
Vue.use(CheckboxGroup) // CheckboxGroup多选框组,适用于多个勾选框绑定到同一个数组的情景，通过是否勾选来表示这一组选项中选中的项
Vue.use(Checkbox)
Vue.use(Upload) // Upload上传,通过点击或者拖拽上传文件
Vue.use(Timeline) // Timeline时间线,可视化地呈现时间流信息
Vue.use(TimelineItem)
Vue.prototype.$message = Message // 把弹框提示组件挂载在Vue的原型的$message(自定义属性)上
// MessageBox弹框, 模拟系统的消息提示框而实现的一套模态对话框组件，用于消息提示、确认消息和提交内容
Vue.prototype.$confirm = MessageBox.confirm // 把MessageBox弹框挂载在Vue的原型的$confirm(自定义属性)上
